package org.demo.szml.perssionservice.service;

import org.demo.szml.api.dto.PermissionBindingReqDTO;
import org.demo.szml.api.dto.PermissionBindingResDTO;
import org.demo.szml.perssionservice.service.result.PermissionAttributeHandleResult;
import org.demo.szml.perssionservice.service.result.PermissionBaseResult;

/**
 * @description: 权限服务接口
 * @date: 2025/6/16 11:48
 * @version: 1.0
 */
public interface IPermissionService {
    /** 绑定默认角色 - 普通用户
     * @param userId 绑定请求参数
     * @return 处理结果
     */
    PermissionBaseResult bindDefaultRole(Long userId);

    /** 获取归属操作人权限的用户列表
     * @param operatorId 操作人ID
     * @param page 页码
     * @param size 每页数量
     * @return 处理结果
     */
    PermissionAttributeHandleResult getAttributeUsers(Long operatorId, Integer page, Integer size);

    /** 获取归属操作人权限的用户列表
     * @param operatorId 操作人ID
     * @param userId 用户ID
     * @return 处理结果 当符合权限要求时 用户ID会被放入合法用户ID列表中去
     */
    PermissionAttributeHandleResult getAttributeRelation(Long operatorId, Long userId);

    /** 重新绑定角色
     * @param userId 用户ID
     * @param operatorId 操作人ID
     * @param roleId 角色ID
     * @return 处理结果
     */
    PermissionBindingResDTO rebindRole(Long userId, Long operatorId, Integer roleId);
}
